#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;

//int n, m, ans;
//int a[100005], b[100005];
//
//int find(int x) {
//	int l = 1, r = m + 1;
//	int tmp=1e9;
//	while (l<r)
//	{
//		int mid = l + (r - l) / 2;
//		if (a[mid] == x) {
//			return 0;
//		}
//		else if (a[mid] > x) {
//			r = mid;
//			tmp = min(tmp, abs(a[mid] - x));
//		}
//		else {
//			l = mid + 1;
//			tmp = min(tmp, abs(a[mid] - x));
//		}
//	}
//	return tmp;
//}
//int main() {
//	cin >> m >> n;
//	for (int i = 1; i <= m; i++)
//	{
//		cin >> a[i];
//	}
//	sort(a + 1, a + 1 + m);
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> b[i];
//		ans += find(b[i]);
//	}
//	printf("%d", ans);
//	return 0;
//}
//#define ll long long
//ll n, m;
//ll a[1000005];
//bool p(int h) {
//	ll tot = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		if (a[i] > h) {
//			tot += a[i] - h;
//		}
//	}
//	return tot >= m;
//}
//int main() {
//	scanf("%lld%lld", &n, &m);
//	for (int i = 1; i <=n; i++)
//	{
//		scanf("%lld", &a[i]);
//	}
//	int l = 0, r = 1e9, ans, mid;
//	while (l <= r) {
//		if (p(mid = l + r >> 1))
//			ans = mid, l = mid + 1;
//		else
//			r = mid - 1;
//	}
//	printf("%d", ans);
//	return 0;
//}

//int l, n, m;
//int arr[50005];
//bool p(int ans) {
//	int sum = 0;
//	int now = 0;
//	for (int i = 1; i <= n+1; i++)
//	{
//		if (arr[i] - arr[now] < ans)
//		{
//			sum++;
//		}
//		else now = i;
//	}
//	return sum <= m;
//}
//int main() {
//	scanf("%d%d%d", &l, &n, &m);
//	for (int i = 1; i <= n; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	arr[n + 1] = l;
//	int L = 1, R = l+1, mid, ans;
//	while (L<R)
//	{
//		if (p(mid = L + (R-L)/2))ans = mid, L = mid+1;
//		else R = mid;
//	}
//	printf("%d", ans);
//	return 0;
//}
//#define ll long long
//int n,ans;
//int a[6][1005],b[6][1005];
//void dfs(int x, int sum) {
//	if (x > 4)
//	{
//		if(sum==0)
//		ans++;
//		return;
//	}
//	for (int i = 1; i <= n; i++)
//	{
//		if (b[x][i]==0)
//		{
//			b[x][i] = 1;
//			sum += a[x][i];
//			dfs(x + 1, sum);
//			b[x][i] = 0;
//			sum -= a[x][i];
//		}
//	}
//}
//int main() {
//	cin >> n;
//	for (int i = 1; i <= 4; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			cin >> a[i][j];
//		}
//	}
//	dfs(1, 0);
//	printf("%d", ans);
//	return 0;
//}
//#include <iostream>
//#include <climits>
//using namespace std;
//
//int main() {
//    ios::sync_with_stdio(false);
//    cin.tie(0);
//
//    int T;
//    cin >> T; 
//    while (T--) {
//        int a, b, c;
//        cin >> a >> b >> c; 
//
//        int min_sum = INT_MAX; 
//        for (int x = 0; x <= 1023; ++x) {
//            int current_sum = (a ^ x) + (b ^ x) + (c ^ x);
//            if (current_sum < min_sum) { 
//                min_sum = current_sum;
//            }
//        }
//        cout << min_sum << '\n'; 
//    }
//
//    return 0;
//}
//
//#include <iostream>
//#include <vector>
//#include <unordered_map>
//using namespace std;
//
//int main() {
//    ios::sync_with_stdio(false);
//    cin.tie(0);
//
//    int n;
//    cin >> n;
//    vector<int> A(n), B(n), C(n), D(n);
//    for (int i = 0; i < n; ++i) cin >> A[i];
//    for (int i = 0; i < n; ++i) cin >> B[i];
//    for (int i = 0; i < n; ++i) cin >> C[i];
//    for (int i = 0; i < n; ++i) cin >> D[i];
//    unordered_map<int, int> sumAB;
//    for (int i = 0; i < n; ++i) {
//        for (int j = 0; j < n; ++j) {
//            int sum = A[i] + B[j];
//            sumAB[sum]++;
//        }
//    }
//
//    long long count = 0;
//    for (int k = 0; k < n; ++k) {
//        for (int l = 0; l < n; ++l) {
//            int target = -(C[k] + D[l]);
//            if (sumAB.find(target) != sumAB.end()) {
//                count += sumAB[target];
//            }
//        }
//    }
//
//    cout << count << '\n'; 
//
//    return 0;
//}
